package robren.domain;

import java.util.LinkedList;
import java.util.List;
import robren.data.IEmpleoStoreDAO;
import robren.data.ISolicitanteDAO;
import robren.data.IUserDAO;
import robren.data.JDBCEmpleoStoreDAO;
import robren.data.JDBCSolicitanteDAO;
import robren.data.JDBCUserDAO;

public class UsuarioManager {
	private IUserDAO uDao = new JDBCUserDAO();
	private IEmpleoStoreDAO esDao = new JDBCEmpleoStoreDAO();
	private ISolicitanteDAO sDao = new JDBCSolicitanteDAO();

	public List<Empleo> encontrarEmpleo(String id) {
		List<Empleo> empleos = new LinkedList<Empleo>();
		String oid = sDao.selectOidSolicitante(id);
		List<Aptitud> aptitudes = uDao.selectAptitudesUser(oid);
		empleos = esDao.selectEmpleosApto(aptitudes);
		return empleos;
	}

	public boolean login(String userForm, String passwdForm) {
		boolean respuesta = sDao.Logado(userForm, passwdForm);
		return respuesta;
	}

	public Integer calcularPuntos(String id) {
		Usuario user = uDao.selectUsuario(id);
		if (user.getEdad() < 30) {
			user.setPuntos(user.getPuntos() + 20);
		} else if (user.getEdad() < 50) {
			user.setPuntos(user.getPuntos() + 10);
		} else
			user.setPuntos(user.getPuntos() + 30);
		if (user.esFamiliaNumerosa())
			user.setPuntos(user.getPuntos() + 25);
		return user.getPuntos();
	}

	public List<Curso> registrar(Usuario user,String oidsol) {

		Solicitante sol = new Solicitante(user.getId_Solicitante(), user
				.getNombre(), user.getDireccion(), user.getNick(), user
				.getPassword(), user.getEmail(), user.getTelefono(), user
				.getSector());
		sDao.insertSolicitante(sol,oidsol);
		uDao.insertUser(user,oidsol);
		Integer puntos = calcularPuntos(user.getId_Solicitante());
		sDao.updatePuntos(user.getId_Solicitante(), puntos);
		SolicitanteManager sm = new SolicitanteManager();
		return sm.recomendarCursos(user.getId_Solicitante());

	}

	public boolean esPersonaOEmpresa(String nick) {

		boolean res = true;

		String id = sDao.selectId(nick);
		Usuario usuario = uDao.selectUsuario(id);
		if (usuario.getDni().equals("")) {
			res = false;
		}
		return res;

	}

	public Usuario datosUsuario(String id_persona) {
		return uDao.selectUsuario(id_persona);
	}

}
